home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xml / DTDMLWriter.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  7.3 KB  |  198 lines

  1. package com.extensibility.xml;
  2.  
  3. import com.extensibility.util.Debug;
  4. import com.extensibility.util.StringUtilities;
  5. import java.io.StringWriter;
  6. import java.util.Enumeration;
  7. import java.util.Vector;
  8.  
  9. public class DTDMLWriter extends SchemaWriter implements ExportInterface {
  10.    ElemProxy elemProxy;
  11.    AttrProxy attrProxy;
  12.    UnparsedEntityProxy unparsedEntityProxy;
  13.    NotationProxy notationProxy;
  14.    ExtSubsetProxy extSubsetProxy;
  15.  
  16.    public DTDMLWriter(SchemaIntf var1) {
  17.       super(var1, var1.getURI());
  18.    }
  19.  
  20.    public DTDMLWriter(SchemaIntf var1, URI var2) {
  21.       super(var1, var2);
  22.    }
  23.  
  24.    public String getType(String var1) {
  25.       if (var1.equals("CDATA")) {
  26.          return "CData";
  27.       } else if (var1.equals("ID")) {
  28.          return "ID";
  29.       } else if (var1.equals("IDREF")) {
  30.          return "IDRef";
  31.       } else if (var1.equals("IDREFS")) {
  32.          return "IDRefs";
  33.       } else if (var1.equals("ENTITY")) {
  34.          return "Entity";
  35.       } else if (var1.equals("ENTITIES")) {
  36.          return "Entities";
  37.       } else if (var1.equals("NMTOKEN")) {
  38.          return "Nmtoken";
  39.       } else if (var1.equals("NMTOKENS")) {
  40.          return "Nmtokens";
  41.       } else if (var1.equals("NOTATION")) {
  42.          return "Notation";
  43.       } else if (var1.equals("")) {
  44.          return "Enumeration";
  45.       } else {
  46.          Debug.assert(false, String.valueOf("unknown datatype: ").concat(String.valueOf(var1)));
  47.          return String.valueOf("#UNKNOWN: ").concat(String.valueOf(var1));
  48.       }
  49.    }
  50.  
  51.    protected SchemaWriter.DeclWriterProxyIntf createProxy(ElementDeclaration var1) {
  52.       if (this.elemProxy == null) {
  53.          this.elemProxy = new ElemProxy(this);
  54.       }
  55.  
  56.       this.elemProxy.setDecl(var1);
  57.       return this.elemProxy;
  58.    }
  59.  
  60.    protected SchemaWriter.DeclWriterProxyIntf createProxy(AttributeDeclaration var1) {
  61.       if (this.attrProxy == null) {
  62.          this.attrProxy = new AttrProxy(this);
  63.       }
  64.  
  65.       this.attrProxy.setDecl(var1);
  66.       return this.attrProxy;
  67.    }
  68.  
  69.    protected SchemaWriter.DeclWriterProxyIntf createProxy(GeneralEntityDeclaration var1) {
  70.       if (!(var1 instanceof ExternalGEDeclaration)) {
  71.          return super.nopProxy;
  72.       } else {
  73.          ExternalGEDeclaration var2 = (ExternalGEDeclaration)var1;
  74.          if (!var2.isUnparsed()) {
  75.             return super.nopProxy;
  76.          } else {
  77.             if (this.unparsedEntityProxy == null) {
  78.                this.unparsedEntityProxy = new UnparsedEntityProxy(this);
  79.             }
  80.  
  81.             this.unparsedEntityProxy.setDecl(var2);
  82.             return this.unparsedEntityProxy;
  83.          }
  84.       }
  85.    }
  86.  
  87.    protected SchemaWriter.DeclWriterProxyIntf createProxy(NotationDeclaration var1) {
  88.       if (this.notationProxy == null) {
  89.          this.notationProxy = new NotationProxy(this);
  90.       }
  91.  
  92.       this.notationProxy.setDecl(var1);
  93.       return this.notationProxy;
  94.    }
  95.  
  96.    protected SchemaWriter.DeclWriterProxyIntf createProxy(ExternalSubset var1) {
  97.       if (this.extSubsetProxy == null) {
  98.          this.extSubsetProxy = new ExtSubsetProxy(this);
  99.       }
  100.  
  101.       this.extSubsetProxy.setDecl(var1);
  102.       return this.extSubsetProxy;
  103.    }
  104.  
  105.    protected String getExtSubsetsAsGEDecls() {
  106.       StringBuffer var1 = new StringBuffer();
  107.       Enumeration var2 = super.schema.getStructure().children();
  108.       String var3 = String.valueOf(System.getProperty("line.separator")).concat(String.valueOf("\t"));
  109.  
  110.       while(var2.hasMoreElements()) {
  111.          ExternalSubset var4 = (ExternalSubset)var2.nextElement();
  112.          var1.append(String.valueOf(String.valueOf(String.valueOf(String.valueOf(String.valueOf(var3).concat(String.valueOf("<!ENTITY "))).concat(String.valueOf(((BaseDeclaration)var4).getName()))).concat(String.valueOf(" SYSTEM  '"))).concat(String.valueOf(var4.getSystemURI().toSource()))).concat(String.valueOf("'>")));
  113.       }
  114.  
  115.       var1.append(System.getProperty("line.separator"));
  116.       return var1.toString();
  117.    }
  118.  
  119.    private void writeDTDSource(SXE var1) {
  120.       String var2 = System.getProperty("line.separator");
  121.       CommentList var3 = super.schema.getCommentList(super.uri);
  122.       Object var4 = null;
  123.       String var6 = super.schema.getEncoding();
  124.       if (var6 != null) {
  125.          var1.writeRawText(this.makeHTMLFriendly(String.valueOf(String.valueOf(String.valueOf(String.valueOf("<?xml encoding='").concat(String.valueOf(var6))).concat(String.valueOf("' ?>"))).concat(String.valueOf(var2))).concat(String.valueOf(var2))));
  126.       }
  127.  
  128.       var1.writeRawText("<BR>");
  129.       if (var3 != null && var3.size() > 0) {
  130.          var1.writeRawText(this.makeHTMLFriendly(var3.getCommentsAsSource()));
  131.       }
  132.  
  133.       boolean var7 = true;
  134.       Enumeration var8 = super.schema.getDeclarations(super.uri, true);
  135.  
  136.       while(var8.hasMoreElements()) {
  137.          BaseDeclaration var9 = (BaseDeclaration)var8.nextElement();
  138.          if (var7) {
  139.             if (var9.hasComments()) {
  140.                var1.writeRawText(this.makeHTMLFriendly((new Comment("")).getSource()));
  141.             }
  142.  
  143.             var7 = false;
  144.          }
  145.  
  146.          if (var9 instanceof ElementDeclaration) {
  147.             ElementDeclaration var10 = (ElementDeclaration)var9;
  148.             BaseDeclaration var11 = super.schema.getDeclarationAfter(var9);
  149.             if (var11 != null && var11 instanceof EntityDeclaration) {
  150.                AttributeGroup var12 = var10.getAttributeGroup();
  151.                Object var13 = null;
  152.                Vector var17 = var12.getUsesList((Vector)null);
  153.                if (var17 != null && var17.contains(var11)) {
  154.                   var8.nextElement();
  155.                }
  156.             }
  157.          }
  158.  
  159.          try {
  160.             StringWriter var15 = new StringWriter();
  161.             var9.write(var15);
  162.             String var16 = this.makeHTMLFriendly(var15.toString());
  163.             var1.writeRawText(var16);
  164.          } catch (Exception var14) {
  165.          }
  166.       }
  167.  
  168.    }
  169.  
  170.    protected void writeHeader(SXE var1) {
  171.       String var2 = this.getExtSubsetsAsGEDecls();
  172.       var1.writeDocTypeWithInternal("DocumentDef", (String)null, var2);
  173.       var1.writeComment("Generated by XML Authority. DDML version 1.0");
  174.       var1.writeElem("DocumentDef");
  175.       var1.writeAttr("name", super.schema.getURI().getShortName());
  176.       var1.writeLineBreak();
  177.       var1.writeAttr("xmlns", "http://www.purl.org/NET/ddml/v1");
  178.       var1.writeLineBreak();
  179.       var1.writeAttr("xmlns:DDML", "http://www.purl.org/NET/ddml/v1");
  180.       var1.writeAttr("Version", "1.0");
  181.       var1.writeElem("dtdsource", -1);
  182.       var1.writeRawText("<![CDATA[\r\n");
  183.       this.writeDTDSource(var1);
  184.       var1.writeRawText("]]>\r\n");
  185.       var1.flush("dtdsource");
  186.    }
  187.  
  188.    protected String makeHTMLFriendly(String var1) {
  189.       var1 = StringUtilities.replace(var1, "\"", """);
  190.       var1 = StringUtilities.replace(var1, ">", ">");
  191.       var1 = StringUtilities.replace(var1, "<", "<BR><");
  192.       var1 = StringUtilities.replace(var1, "\r", "");
  193.       var1 = StringUtilities.replace(var1, "\n", "");
  194.       var1 = StringUtilities.replace(var1, "\t", "");
  195.       return var1;
  196.    }
  197. }
  198.